package own.stu.jobgib.playown.fsm.easyStates.api;

import java.util.Set;

public interface FiniteStateMachine {

    State getCurrentState();

    State getInitialState();

    Set<State> getFinalStates();

    Set<State> getStates();

    Set<Transition> getTransitions();

    //  Return the last triggered event.
    Event getLastEvent();

    Transition getLastTransition();

    State fire(Event event) throws FiniteStateMachineException;
}
